package com.roamer.school.repository.enums;

import com.baomidou.mybatisplus.core.enums.IEnum;
import com.fasterxml.jackson.annotation.JsonFormat;

import java.util.Arrays;

/**
 * 用户状态枚举
 *
 * @author roamer
 * @version V1.0
 * @date 2018/12/26 22:31
 */
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum UserStatusEnum implements IEnum<Integer> {

    /** 未启用 */
    DISABLE(0, "未启用"),
    /** 正常 */
    ENABLE(1, "正常"),
    /** 锁定 */
    LOCKED(2, "锁定");

    private Integer value;

    private String desc;

    UserStatusEnum(Integer value, String desc) {
        this.value = value;
        this.desc = desc;
    }

    @Override
    public Integer getValue() {
        return value;
    }

    public String getDesc() {
        return desc;
    }

    /**
     * 判断参数合法性
     *
     * @param value 对比值
     *
     * @return {@code true} 传入参数和任意枚举value属性相等
     */
    public static boolean isValidName(Integer value) {
        return Arrays.stream(UserStatusEnum.values()).anyMatch(e -> e.getValue().equals(value));
    }

    /**
     * 根据value获取enum实例
     *
     * @param value value属性
     *
     * @return {@code UserStatusEnum} value对应的UserStatusEnum，没有匹配的返回null
     */
    public static UserStatusEnum findByValue(Integer value) {
        if (null == value) {
            return null;
        }
        for (UserStatusEnum e : UserStatusEnum.values()) {
            if (e.getValue().equals(value)) {
                return e;
            }
        }
        return null;
    }

}
